﻿
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CPPEI.Coolzon.Launcher
{
    public static class ZipUtil
    {
        public static int avg = 1024 * 1024 * 100;//100MB写一次   

        #region 压缩文件 和 文件夹

        /// <summary>

        /// 压缩文件 和 文件夹

        /// </summary>

        /// <param name="FileToZip">待压缩的文件或文件夹，全路径格式</param>

        /// <param name="ZipedFile">压缩后生成的压缩文件名，全路径格式</param>

        /// <returns>压缩是否成功</returns>

        public static bool Zip(string FileToZip, string ZipedFile)
        {          
            try
            {
                FastZip FastZip = new FastZip();
                FastZip.CreateZip(ZipedFile, FileToZip, true, "");
                return true;
            }
            catch (Exception ex)
            {
                return false;
            }
        }

        #endregion

        #region 解压

        /// <summary>   

        /// 功能：解压zip格式的文件。   

        /// </summary>   

        /// <param name="zipFilePath">压缩文件路径，全路径格式</param>   

        /// <param name="unZipDir">解压文件存放路径,全路径格式，为空时默认与压缩文件同一级目录下，跟压缩文件同名的文件夹</param>   

        /// <param name="err">出错信息</param>   

        /// <returns>解压是否成功</returns>   

        public static bool UnZip(string zipFilePath, string unZipDir,string zipFolderName)
        {

            if (zipFilePath == string.Empty)
            {

                throw new System.IO.FileNotFoundException("压缩文件不不能为空！");

            }

            if (!File.Exists(zipFilePath))
            {

                throw new System.IO.FileNotFoundException("压缩文件: " + zipFilePath + " 不存在!");

            }

            //解压文件夹为空时默认与压缩文件同一级目录下，跟压缩文件同名的文件夹   

            if (unZipDir == string.Empty)

                unZipDir = zipFilePath.Replace(Path.GetFileName(zipFilePath), zipFolderName);

            if (!unZipDir.EndsWith("\\"))

              unZipDir += "\\";

            if (!Directory.Exists(unZipDir))

                Directory.CreateDirectory(unZipDir);
            try
            {
                FastZip fastZip = new FastZip();
                fastZip.ExtractZip(zipFilePath, unZipDir, "");
                return true;
            }
            catch(Exception ex)
            {
                return false;
            }

          

        }//解压结束  


 
        #endregion

    }
}
